Kapitel 5 Dateizugriff
Das Problem, das sich beim Beispiel aus dem vorhergehenden Kapitel stellt, ist der Dateizugriff: Was passiert, wenn die Excel-Datei gar nicht existiert? Man kann den Benutzer fragen, wo er sie speichern möchte, aber wie »merkt« sich das Programm den Pfad? Dies kann in eine Datei geschrieben werden, die auf der Festplatte gespeichert wird, aber: In welchem Ordner wird sie gespeichert? Lösungen für diese Fragen werden im folgenden Kapitel beschrieben.
Wir nennen die Datei »info.txt«. Der Name ist beliebig. In dieser Datei wird der Pfad abgelegt, den der Benutzer angibt, falls die Excel-Mappe nicht existiert. Doch: Wo soll diese Datei gespeichert werden? Möglicherweise existiert nicht auf jedem Rechner der gleiche Ordner (beispielsweise »C:\Eigene Dateien«). Man könnte einen neuen Ordner anlegen - aber auch das erscheint problematisch, da dann der Benutzer möglicherweise diesen Ordner löscht oder umbenennt.
5.1 Prüfen, ob eine Datei vorhanden ist
 
Besser erscheint folgende Lösung: Die Datei »info.txt« wird in dem Ordner gespeichert, in dem sich das Betriebssystem befindet. Und wo liegt es? Hier hilft der Befehl:
System.Environment.SystemDirectory.ToString
Der erste Teil (System.Environment.SystemDirectory) liefert das Verzeichnis, in dem sich Windows befindet, die Methode ToString wandelt es in eine Zeichenkette um, die ausgegeben werden kann. Am besten wird diese Pfadangabe in einer Variablen gespeichert:
Dim strWinVerz As String
strWinVerz = System.Environment.SystemDirectory.ToString
Einige wichtige Eigenschaften von System.Environment finden Sie in der folgenden Tabelle:
Tabelle 5.1
Einige wichtige Eigenschaften von System.Environment
| Eigenschaft
|
Beschreibung
|
| CurrentDirectory
|
der Pfad des aktuellen Verzeichnisses
|
| SystemDirectory
|
der Pfad des Systemverzeichnisses
|
| MachineName
|
der NEetBIOS-Name des Computers
|
| OSVersion
|
die Nummer des Betriebssystems
|
| TickCount
|
die Anzahl der Millisekunden, die seit dem Systemstart verstrichen sind
|
| Version
|
die Version der CLR
|
| UserName
|
der Benutzername
|
| UserInteractive
|
gibt zurück, ob der aktuelle Prozess interaktiv ausgeführt wird
|
| UserDomainName
|
der Netzwerkdomänenname
|
| NewLine
|
neue Zeile (entspricht vbCr)
|
Abbildung 5.1
Einige Systeminfos
Nun, nachdem der Pfad ausfindig gemacht wurde, kann der Dateiname angehängt werden. Zu Beginn wird gesetzt:
Const DATEINAME As String = "info.txt"
Der komplette Dateiname lautet:
strWinVerz & "\" & DATEINAME
Nun wird überprüft, ob es diese Datei gibt. Dies leistete in Visual Basic der Befehl Dir, mit dem hier auch noch gearbeitet werden kann. VB.NET stellt die Methode System.IO.File.Exists zur Verfügung. Sie verlangt einen Dateinamen und gibt »True« oder »False« zurück. Also wird geprüft:
If System.IO.File.Exists(strWinVerz & "\" & DATEINAME) = _
False Then
Mit der Klasse File kann natürlich einiges »angestellt« werden - die meisten der folgenden Befehle sind sicherlich bekannt:
Tabelle 5.2
Einige Methoden der Klasse System.IO.File
| Methode
|
Beschreibung
|
| Create
|
erstellt eine Datei
|
| Delete
|
löscht eine Datei
|
| Move
|
verschiebt eine Datei
|
| Exists
|
überprüft, ob eine Datei vorhanden ist
|
| GetAttributes
|
gibt die Attribute zurück
|
| GetCreateionTime
|
das Erstelldatum
|
| GetLastAccessTime
|
letzter Zugriff
|
| GetLastWriteTime
|
geändert am
|
| SetAttributes
|
setzt die Attribute
|
| SetCreateionTime
|
legt das Erstelldatum fest
|
| SetLastAccessTime
|
legt den letzten Zugriff fest
|
| SetLastWriteTime
|
legt fest, wann die Datei geändert wurde
|
|